package com.achen.controller;

import com.achen.constant.MessageConstant;
import com.achen.entity.PageResult;
import com.achen.entity.QueryPageBean;
import com.achen.entity.Result;
import com.achen.pojo.CheckItem;
import com.achen.service.CheckItemService;
import com.alibaba.dubbo.config.annotation.Reference;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 检查项管理
 * @author achen
 * @create 2020-04-07 16:27
 */
@RestController
@RequestMapping("/checkItem")
public class CheckItemController {

    @Reference
    private CheckItemService checkItemService;

    //新增检查项
    @RequestMapping("/addCheckItem")
    public Result addCheckItem(@RequestBody CheckItem checkItem){ //@RequestBody作用：前台发送过来的数据是json格式的，需要@RequestBody解析成CheckItem类型,还有一个注解，@RequestParam("")，如果前台传过来的值与接收参数的值不一致，需要用到@RequestParam("names") String name;
        //try-catch作用：判断方法调用成功与否
        try{
            checkItemService.addCheckItem(checkItem);
        }catch(Exception e){
            //进入catch，说明调用失败，给用户响应的提示信息
            e.printStackTrace();
            return new Result(false, MessageConstant.ADD_CHECKITEM_FAIL);
        }
        return new Result(true, MessageConstant.ADD_CHECKITEM_SUCCESS);
    }

    //检查项分页查询
    @RequestMapping("/findPage")
    public PageResult findPage(@RequestBody QueryPageBean queryPageBean){
        System.out.println(queryPageBean);
        PageResult pageResult = checkItemService.findPage(queryPageBean);
        return pageResult;
    }

    //删除检查项
    @PreAuthorize("hasAuthority('CHECKITEM_DELETE')")//权限校验
    @RequestMapping("/delOneCheckItem")
    public Result delOneCheckItem(Integer id){ //@RequestBody作用：前台发送过来的数据是json格式的，需要@RequestBody解析成CheckItem类型,还有一个注解，@RequestParam("")，如果前台传过来的值与接收参数的值不一致，需要用到@RequestParam("names") String name;
        //try-catch作用：判断方法调用成功与否
        try{
            checkItemService.delOneCheckItem(id);
        }catch(Exception e){
            //进入catch，说明调用失败，给用户响应的提示信息
            e.printStackTrace();
            return new Result(false, MessageConstant.DELETE_CHECKITEM_FAIL);
        }
        return new Result(true, MessageConstant.DELETE_CHECKITEM_SUCCESS);
    }

    //修改检查项
    @RequestMapping("/editCheckItem")
    public Result editCheckItem(@RequestBody CheckItem checkItem){
        //try-catch作用：判断方法调用成功与否
        try{
            checkItemService.editCheckItem(checkItem);
        }catch(Exception e){
            //进入catch，说明调用失败，给用户响应的提示信息
            e.printStackTrace();
            return new Result(false, MessageConstant.EDIT_CHECKITEM_FAIL);
        }
        return new Result(true, MessageConstant.EDIT_CHECKITEM_SUCCESS);
    }

    //修改之前回显信息
    @RequestMapping("/findCheckItemById")
    public Result findCheckItemById(Integer id){
        //try-catch作用：判断方法调用成功与否
        try{
            CheckItem checkItem = checkItemService.findCheckItemById(id);
            return new Result(true, MessageConstant.QUERY_CHECKITEM_SUCCESS,checkItem);
        }catch(Exception e){
            //进入catch，说明调用失败，给用户响应的提示信息
            e.printStackTrace();
            return new Result(false, MessageConstant.QUERY_CHECKITEM_FAIL);
        }
    }

    //查询所有检查项信息
    @RequestMapping("/findAllCheckItem")
    public Result findAllCheckItem(){
        //try-catch作用：判断方法调用成功与否
        try{
            List<CheckItem> checkItemList = checkItemService.findAllCheckItem();
            return new Result(true, MessageConstant.QUERY_CHECKITEM_SUCCESS,checkItemList);
        }catch(Exception e){
            //进入catch，说明调用失败，给用户响应的提示信息
            e.printStackTrace();
            return new Result(false, MessageConstant.QUERY_CHECKITEM_FAIL);
        }
    }
}
